﻿#pragma once
#include "System.h"

class EulerianSystem : public System
{
public:
  static constexpr UInt8 NUM_VARIABLES = 5;
  using VType = Vec<Real, NUM_VARIABLES>;

  EulerianSystem(const Configuration& cfg);
  virtual ~EulerianSystem(){};

  void Init() override;
  void virtual InitialCondition();
  void Evolve() override;

  void PreSolve();
  void Solve();
  void PostSolve();

private:
  ArrayHandle<VType> _solution;
  ArrayHandle<VType> _rhs;
};